using System;
using System.Drawing;
using System.Windows.Forms;
class ColorScroll: Form
{
	Panel panel;
	Label[] alabelName = new Label[3];
	Label[] alabelValue = new Label[3];
	VScrollBar[] avscroll = new VScrollBar[3];
	public static void Main()
	{
		Application.Run(new ColorScroll());
	}
	public ColorScroll()
	{
		Text = "Color Scroll";
		Color[] acolor = { Color.Red, Color.Green, Color.Blue };
		// Create the panel.
		panel = new Panel();
		panel.Parent = this;
		panel.Location = new Point(0, 0);
		panel.BackColor = Color.White;
		// Loop through the three colors.
		for (int i = 0; i < 3; i++)
		{
			alabelName[i] = new Label();
			alabelName[i].Parent = panel;
			alabelName[i].ForeColor = acolor[i];
			alabelName[i].Text = "&" + acolor[i].ToKnownColor();
			alabelName[i].TextAlign = ContentAlignment.MiddleCenter;
			avscroll[i] = new VScrollBar();
			avscroll[i].Parent = panel;
			avscroll[i].SmallChange = 1;
			avscroll[i].LargeChange = 16;
			avscroll[i].Minimum = 0;
			avscroll[i].Maximum = 255 + avscroll[i].LargeChange - 1;
			avscroll[i].ValueChanged +=
				new EventHandler(ScrollOnValueChanged);
			avscroll[i].TabStop = true;
			alabelValue[i] = new Label();
			alabelValue[i].Parent = panel;
			alabelValue[i].TextAlign = ContentAlignment.MiddleCenter;
		}
		Color color = BackColor;
		avscroll[0].Value = color.R; // Generates ValueChanged event
		avscroll[1].Value = color.G;
		avscroll[2].Value = color.B;
		OnResize(EventArgs.Empty);
	}
	protected override void OnResize(EventArgs ea)
	{
		base.OnResize(ea);
		int cx = ClientSize.Width;
		int cy = ClientSize.Height;
		int cyFont = Font.Height;
		panel.Size = new Size(cx / 2, cy);
		for (int i = 0; i < 3; i++)
		{
			alabelName[i].Location = new Point(i * cx / 6, cyFont / 2);
			alabelName[i].Size = new Size(cx / 6, cyFont);
			avscroll[i].Location = new Point((4 * i + 1) * cx / 24,
				2 * cyFont);
			avscroll[i].Size = new Size(cx / 12, cy - 4 * cyFont);
			alabelValue[i].Location = new Point(i * cx / 6,
				cy - 3 * cyFont / 2);
			alabelValue[i].Size = new Size(cx / 6, cyFont);
		}
	}
	void ScrollOnValueChanged(Object obj, EventArgs ea)
	{
		for (int i = 0; i < 3; i++)
			if((VScrollBar) obj == avscroll[i])
				alabelValue[i].Text = avscroll[i].Value.ToString();
		BackColor = Color.FromArgb(avscroll[0].Value,
			avscroll[1].Value,
			avscroll[2].Value);
	}
}